\documentclass[final]{beamer}
\usepackage{htwbeamer}
%\usetheme{Berkeley}

\usepackage{inconsolata}

\usetheme{Antibes}
\usecolortheme{dolphin}
\usefonttheme{default}

\useinnertheme{default}
%\useoutertheme{tree}
\useoutertheme{infolines}

\setbeamercovered{transparent}


\graphicspath{{./pics/}}

\title[Python Krypto]{Präsentation zum Projekt Sicherheit und Kryptpgraphie}
\author{S. Theobald -- H.P. Bui}
\institute{HTW}
%\date{14. 03. 2011}
\definecolor{titleColor}{RGB}{0,102,204}

\begin{document}
\begin{frame}
	%\titlepage
	\begin{center}
		{\small 
			HTW des Saarlandes -- Fakultät für Ingenieurwissenschaften \\
			Projekt Sicherheit und Kryptographie
		}
	\end{center}
	\vfill
	\begin{center}
		
		\textcolor{titleColor}
		{
			{\LARGE Präsentation zum \\
				\glqq{}Projekt Kryptographie\grqq{} 
				\vspace{0.6em}\\ }
		}

		\vspace{0.5cm}
		14. 03. 2012 \\
		\vspace{0.5cm}
		{\large\rmfamily Sarah \textsc{Theobald} \hspace{1cm} Hong Phuc \textsc{Bui}}

	\end{center}
\end{frame}

\begin{frame}{Inhaltsverzeichnis}
	\tableofcontents
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Übersicht}
\begin{frame}{Übersicht}
	\begin{itemize}
		\item \texttt{base64, base32, base16}
		\item Gröstl -- SHA3 -- Kandidat
		\item Diffie-Hellman Key Exchange
		\item Pollard-$\lambda$
		\item SSL Zertifikat
	\end{itemize}
\end{frame}


\section{Implementation von \texttt{baseX}, X = 64, 32, 16}
\begin{frame}{Zweck}
	\begin{itemize}
		\item Binäre Daten in ASCII umzuwandern
		\item Plattformunabhängiges Datenaustauschformat
	\end{itemize}
\end{frame}
\begin{frame}{Spezifikation}
	\begin{itemize}
		\item \texttt{baseX} werden in RFC 4648 spezifiziert.
		\item \texttt{base64}: aus 3-Byte Block wird in 4 6-Bit Block umgewandelt.
		\item \texttt{base32}: aus 5-Byte Block wird in 8 5-Bit Block umgewandelt.
		\item \texttt{base32}: aus 1-Byte Block wird in 2 4-Bit Block umgewandelt.
		\item Padding-Charakter : \texttt{=}
	\end{itemize}
\end{frame}

\begin{frame}{Implementation}
	\begin{itemize}
		\item Zwei Verfahren:
			\begin{itemize}
				\item String-Operation
				\item Bit-Ebene-Operation
			\end{itemize}
		\item Zwei Programmierungsstile
			\begin{itemize}
				\item Objekt-orientierte Stile
				\item Prozedurale Stile
			\end{itemize}
	\end{itemize}
\end{frame}



\section{Gröstl-SHA3-Kandidat}

\begin{frame}{Spezifikation}
	\begin{itemize}
		\item Gröstl wird verwendet, um die Signatur einer Message zu generieren.
			Damit kann man die Integrität einer Message überprüfen.
		\item Vorteil gegen andere Hash-Funktionen ist, dass man die Länge der Signatur
			einstellen kann.
		\item Die Spezifikation ist unter
			\url{http://www.groestl.info/Groestl.pdf} zu finden.
	\end{itemize}
\end{frame}



\begin{frame}{Implementation}
	\begin{itemize}
		\item Objekt-orientiert => Kapselung der Operationen und Daten in eine Einheit
		\item \texttt{matrix.py}: implementiert die Klasse \texttt{Matrix} mit Methoden:
			\begin{itemize}
				\item addRoundConstant, 
				\item shiftBytes, 
				\item mixBytes, 
				\item subBytes
			\end{itemize}

		\item \texttt{hash.py}: implementiert die Operationen auf Matrix-Ebene:
			\begin{itemize}
				\item \texttt{pHash} und \texttt{qHash} einer Matrix
				\item Kompression-Funktion
					$P(h \oplus m)\oplus Q(m) \oplus h$
				\item Truncation-Funktion
			\end{itemize}
		\item Besonderheit: die Funktion \texttt{groestlHash}: Schnittstelle der API 
	\end{itemize}
\end{frame}

\section{Diffie-Hellman Key Exchange}
\begin{frame}{Technologien}
	\begin{itemize}
		\item JSON	
		\begin{itemize}
			\item JSON : JavaScript Object Notation
			\item für Datenaustausch über Netzwerk
			\item Daten für Menschen lesbar
			\item Programmiersprache-unabhängig
			\item Einfach zu parsern
			\item Beispiel:\\
				\texttt{\{"Name":''Alice''\}}
		\end{itemize}
		\item PARI/GP
			\begin{itemize}
				\item Generieren der Primzahl/Schlüssel
			\end{itemize}
	\end{itemize}
\end{frame}

\begin{frame}[fragile]{Protokoll}
Theorie:

	\begin{tabular}{cccc}
                 &  Alice           &                   & Bob            \\
                 & $a^r \mod p$     & $\longrightarrow$ &                \\
                 &                  & $\longleftarrow$  & $a^s \mod p$      \\
Gemeinsamer Key: & $(a^s)^r \mod p$ &                   & $(a^r)^s \mod p$  \\
	\end{tabular}
%TODO: Formatieren.
Implementation:\\
{\footnotesize
\begin{verbatim}
Alice                                                              Bob
---> {"Handshake1": 
      24335516419366764669736212796959875787371700376028288588146}
     {"Handshake2": 
      62393559305561210870852674478929457966103727139386736117433} <---
---> {"Message": "43bfa688a0e4aeff"}
     {"Confirm": "ef5f91ece7dc2a0d"}                               <---
\end{verbatim}
}
\end{frame}

\section{Pollard--$\lambda$--Reihe}
\begin{frame}{Designidee}
	Anwendung der Pollard--$\lambda$--Reihe für diskretes logarithmisches Problem: 
	Suchen die Lösung der Gleichung:
	\[
		g^x \equiv h \mod p 
	\]

	\begin{itemize}
		\item Verteilung der Berechnung von Pollard-Reihe in mehrere Client
		\item Server sucht Kollision
		\item Asynchrone Kommunikation
		\item TODO: (Skript von Herr Weber)
	\end{itemize}
\end{frame}

\begin{frame}{Architektur}
	\begin{itemize}
		\item Server: Aus zwei Teilen
			\begin{description}
				\item [\texttt{Server}] Empfängt den Kontakt von Client, leitet weiter an
					ein \texttt{DLHandler}, und wartet auf die nächste Client
				\item [\texttt{DLHandler}] verarbeitet Daten des Clients. Bei gefundener Kollision
					berechnet er das Ergebnis.
			\end{description}
		 \item Client: 
			 \begin{itemize}
				 \item Empfängt das DL-Problem vom Server.
				 \item Berechnet distinguish Point mit zufälligen Startwerten
					 und sendet an Server.
			 \end{itemize}
	\end{itemize}
\end{frame}

\begin{frame}{Implementation}
	\begin{itemize}
		\item Anwendung von die Bibliothek \texttt{asyncore}
			um asynchrone Kommunikation zu realisieren.
	\end{itemize}
\end{frame}


\section{SSL-Zertifikat}
\begin{frame}{SSL-Zertifikat Host}
	
\end{frame}


\begin{frame}{SSL-Zertifikat Browser}
	
\end{frame}

\begin{frame}[fragile]{SSL-Zertifikat Webserver}
	\begin{itemize}
		\item Sammlung von Zertifikaten
			\begin{itemize}
				\item nmap: langsam
				\item wget und google: Output in Javascript => schwierig zu parsern und weiterverarbeiten
				\item wget und ixquick: 
					\begin{itemize}
						\item Output in html => einfacher zu parsern.
						\item Verwendet POST-Methode um Anfrage zu senden.
					\end{itemize}
			\end{itemize}
	\end{itemize}
	Bsp: ein POST-Option in ixquick
{\footnotesize
	\begin{verbatim}
"cmd=process_search&language=english&\
qid=MHLNMSLSNSMK&rcount=&\
rl=NONE&query=https&cat=web&engine0=v1all&startat="
	\end{verbatim}
}
\end{frame}


\begin{frame}{Parsern von Zertifikaten}
Drei Schritten:
\begin{itemize}
	\item Konvertierung von pem-Format (X509/base64) nach text-Format
		(M2Crypto-Bibliothek) RFC 2459
	\item Parsern Zertifikaten in Text-Format (die Klasse Certificate)
	\item Ausgabe in CSV-Datei speichern
\end{itemize}
\end{frame}


\begin{frame}{Auswertung}
	\begin{itemize}
		\item Anzahl der untersuchten Server: 319
		\item Anzahl der Server, die RSA verwenden: 319
		\item Anzahl der Server mit Schluessellange 1024 : 130
		\item Anzahl der Server mit Schluessellange 4096 : 8
		\item Anzahl der Server mit Schluessellange 2048 : 181
		\item Anzahl der Server mit Exponenten 65537 : 314
		\item Anzahl der Server mit Exponenten 17 : 5	
	\end{itemize}
\end{frame}

\section*{Fragen?}
\begin{frame}
	\begin{center}
		\huge{Vielen Dank für Ihre Aufmerksamkeit}
	\end{center}
\end{frame}
\end{document}
